package remoto;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import dominio.Rodamiento;
import dto.RodamientoTO;

public class GestionRodamientos {
	private static GestionRodamientos instance;

	public static GestionRodamientos getInstance() throws MalformedURLException, RemoteException, NotBoundException {
		if (instance == null)
			instance = new GestionRodamientos();
		return instance;
	}

	private IGestionRodamientos remoto;

	private GestionRodamientos() throws MalformedURLException, RemoteException, NotBoundException {
		remoto = (IGestionRodamientos) Naming.lookup("GestionRodamientos");
	}
	
	public int guardarRodamiento(Rodamiento rodamiento) throws RemoteException {
		return remoto.guardarRodamiento(rodamiento.getDTO());
	}

	public Rodamiento buscarRodamiento(String serie, String sufijo, String marca, String pais) throws RemoteException {
		RodamientoTO dto = remoto.buscarRodamiento(serie, sufijo, marca, pais);
		if (dto != null)
			return Rodamiento.fromDTO(dto);
		return null;
	}

	public List<Rodamiento> listarRodamientos() throws RemoteException {
		List<Rodamiento> lista = new ArrayList<Rodamiento>();
		List<RodamientoTO> dtos = remoto.listarRodamientos();
		for (RodamientoTO dto : dtos)
			lista.add(Rodamiento.fromDTO(dto));
		return lista;
	}
}